import axios from 'axios'

axios.defaults.timeout = 7200000 // 设置前台请求接口超时时间为两小时
axios.defaults.baseURL = '/api' // 请求接口统一配置前缀
// withCredentials:默认情况下，跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。
// 通过将withCredentials属性设置为true，可以指定某个请求应该发送凭据。
// 默认值为false。
// true：在跨域请求时，会携带用户凭证
// false：在跨域请求时，不会携带用户凭证；返回的 response 里也会忽略 cookie
axios.defaults.withCredentials = false

// 添加请求拦截器
axios.interceptors.request.use(
    config => {
        // 在请求前，请求头中设置token
        //config.headers.Authorization = store.state.token
        return config
    },
    err => {
        // 对请求错误做些什么
        return Promise.reject(err)
    }
)
let isNoPermissions = 0
// 添加响应拦截器
axios.interceptors.response.use(
    response => {
        // 对响应数据做点什么
        if (response.status == 200) {
            if (response.data) {

            } else {
                if (response.headers['content-type'] == 'text/html' && response.headers.result) {
                    let objA = decodeURIComponent(response.headers.result.replace(/\+/g, '%20'))
                    let obj = JSON.parse(objA)
                    if (obj.code == '-1') {
                        return Promise.reject(JSON.parse(objA))
                    }
                }
            }

            return response
        }
    },
        error => {
        // 对响应错误做点什么
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    console.log("401找不到资源")
                    break
                case 500:
                    console.log("500服务器资源错误")
                    break
            }
        }
        if (isNoPermissions === 0) {
            if (error.data) {
                return Promise.reject(error.data)
            } else {
                return Promise.reject(error)
            }
        }
    }
)

export default axios
